package dao;

import java.util.Vector;
import entidades.Localidad;

/**
 * Clase de la capa de Persistencia, encargada de recuperar Localidades
 * de la base de datos.
 * 
 */
public class DAOLocalidad extends DAO {

    /**
     * Retorna el vector de objetos Localidad cargados en la base de datos.
     *
     * @return El vector de objetos Localidad
     */
    public static Vector<Localidad> getAll() {
        return getAll("Localidad");
    }
    
    /**
     * Obtiene las localidades que satisfacen la consulta espeificada
     * 
     * @param query     Consulta con las condiciones que se desea satisfacer
     * 
     * @return Vector   Localidades que satisfacen la consulta
     */
    public static Vector<Localidad> get(String query) {
        return getAll(query);
    }

    /**
     * Obtiene las localidades que corresponden a una determinada provincia
     * 
     * @param id_provincia  int     Identificador único de la provincia
     * @return              Vector  Localidades de la provincia
     */
    public static Vector<Localidad> getByProvincia(int id_provincia) {
        Vector<Localidad> localidad = get("LOCALIDAD where  id_provincia = "+id_provincia);
        
        if(!localidad.isEmpty()) {
            return localidad;
        }
        else {
            return null;
        }   
    }

    /**
     * Obtiene la localidad de una provincia con un nombre específio
     * 
     * @param provincia int         Identificador de una provincia
     * @param nombre    String      Nombre de la localidad
     * @return          Localidad   Localidad que posee el nombre especificado
     *                              y pertenece a la provincia indicada
     */
    public static Localidad getByProvinciaLocalidad(int provincia, String nombre) {
        Vector<Localidad> localidad = get("Localidad where  id_provincia = "+provincia+" AND nombre = '"+nombre+"'");
        
        if(!localidad.isEmpty()) {
            return localidad.firstElement();
        }
        else {
            return null;
        }   
    }
    
    /**
     * Obtiene la primer Localidad que satisfaga el nombre especificado
     * @param Nombre String     Nombre de la localidad
     * @return       Localidad  Localidad que posee el nombre especificado
     */
    public static Localidad getByNombre(String Nombre) {
        Vector<Localidad> localidad = get("Localidad where nombre = '"+Nombre+"'");
        
        if(!localidad.isEmpty()) {
            return localidad.get(0);
        }
        else {
            return null;
        }   
    }
            
    /**
     * Obtiene la Localidad a partir de su id
     * @param id int        Id de la Localidad
     * @return   Localidad  Localidad con el id especificado
     */
    public static Localidad getById(int id) {
        Vector<Localidad> localidad = get("Localidad where idLocalidad = "+id);
        
        if(!localidad.isEmpty())
            return localidad.get(0);
            
        return null;
    }
            
}
